package com.infore.metadata.core.model;

import com.infore.metadata.core.interfaces.MetadataQueryProcessInterfaces;
import lombok.Data;

/**
 * 元数据配置
 *
 * @author ：lijh
 * @date 创建时间： 2022/12/19 15:39
 */
@Data
public class MetadataConfig {

    /**
     * 目录
     * 理解为数据库的 database 库名即可
     *
     * 在SQL环境下Catalog和Schema都属于抽象概念，可以把它们理解为一个容器或者数据库对象命名空间中的一个层次，主要 用来解决命名冲突问题。从概念上
     * 说，一个数据库系统包含多个Catalog，每个Catalog又包含多个Schema，而每个Schema又包含多个数 据库对象（表、视图、字段等），反过来讲一个数据库对象必然
     * 属于一个Schema，而该Schema又必然属于一个Catalog
     * SQL环境下，Schema是一组相关的 数据库对象的集合，Schema的名字为该组对象定义了一个命名空间
     *
     * 从实现的角度来看，各种数据库系统对Catalog和Schema的支持和实现方式千差万别，针对具体问题需要参考具体的产品说明书，比较简单而常用的实现方式是使用数据
     * 库名作为Catalog名，使用用户名作为Schema名
     *
     * 供应商      Catalog支持   Schema支持
     * Oracle       不支持         Oracle User ID
     * MySQL        不支持         数据库名
     * MS SQL Server 数据库名      对象属主名，2005版开始有变
     * DB2                         Catalog属主名
     * Sybase       数据库名       数据库属主名
     */
    private String catalog;
    /**
     * 匹配的过滤查询的模式，否则会将全部的表查询出来，有时候需要过滤掉无用的表信息
     */
    private String schemaPattern;
    /**
     * 匹配过滤查的表名，否则会将全部的表查询出来，有时候需要过滤掉无用的表信息
     */
    private String tableNamePattern;

    /**
     * 元数据信息拓展接口，用于元数据查询的事中、事后进行相关的处理
     */
    private MetadataQueryProcessInterfaces metadataQueryProcessInterfaces;


    // --- jdbc 转 java类型相关配置，会给默认值
    /**
     * 该属性可以控制是否强制将 DECIMAL 和 NUMERIC 类型的 JDBC 字段转换为 Java 类型的java.math.BigDecimal，
     * 默认值为false，不强制转换，一般不需要配置
     */
    private Boolean forceBigDecimals = false;
    /**
     * 是否使用驼峰写法
     */
    private Boolean useCamelCase = true;





}
